package com.aier.proxy.service;

import java.util.List;
import java.util.Map;

import com.aier.admin.entity.IcCard;
import com.aier.proxy.entity.Proxy;
import com.aier.proxy.entity.ProxyCity;
import com.aier.school.entity.School;



public interface IProxyService {

    /**
     * 代理商卡 列表每页显示数
     */
    int PROXY_CARD_LIST_PAGESIZE = 10;

    /**
     * 根据卡号排序
     */
    int CARD_SORTABLE_NUMBER = 1;

    /**
     * 根据卡号倒排序
     */
    int CARD_SORTABLE_NUMBER_DESC = 2;

    /**
     * 根据设备码排序
     */
    int ENTRANCE_SORTABLE_SN = 3;

    /**
     * 根据设备码排序
     */
    int ENTRANCE_SORTABLE_SN_DESC = 4;
    
    /**
     * 获取用户下的代理信息
     * 
     * @param uid
     * @return
     */
    List<Proxy> searchProxy(Long uid);
    

    /**
     * 获取代理下的代理区域
     * 
     * @param pid
     * @return
     */
    List<ProxyCity> searchProxyCity(Integer pid);

    /**
     * 查询代理商及其所代理城市
     * @param uid:用户id
     * @return
     */
    List<Proxy> searchProxyAndCityByUid(Long uid);
    
    /**
     * 创建代理商
     */
    int insertProxy(String name, Long uid, String cidStr);

    /**
     * 根据条件查询代理商所有的IC卡信息(分派页面用)
     * 
     * @param page
     * @param proxyCardListPagesize
     * @param sortable
     * @param pid
     * @param ic_state
     * @param ic_head
     * @return
     */
    Map<String, Object> searchProCardsByCondition(int page,
            int proxyCardListPagesize, int sortable, Integer pid, 
            Integer ic_state, String ic_head);

    /**
     * 根据条件查询代理商所有的IC卡信息(查询页面用)
     * @param page
     * @param proxyCardListPagesize
     * @param sortable
     * @param pid
     * @param area_id
     * @param school_id
     * @param ic_state
     * @param ic_head
     * @param card_state
     * @return
     */
    Map<String, Object> searchProCardsByCondition(int page,
            int proxyCardListPagesize, int sortable, int pid, 
            Integer area_id, Integer school_id, Integer ic_state,
            String ic_head, Integer card_state);
    /**
     * 查询代理商已经使用的IC卡(分派前查询)
     * 
     * @param pid
     * @param body_begin
     * @param body_end
     * @param ic_head_add
     * @return
     */
    List<IcCard> searchProCardUse(Integer pid, String body_begin,
            String body_end, String ic_head_add);

    /**
     * 查询代理商的卡(卡前缀选择)
     * 
     * @param pid
     * @return
     */
    List<IcCard> searchProCards(Integer pid);

    /**
     * 根据条件查询代理商门禁设备
     * @param page
     * @param proxyCardListPagesize
     * @param sortable
     * @param pid
     * @param school_id
     * @param dev_state
     * @param poxystate
     * @param sn
     * @return
     */
    Map<String, Object> searchEntDevicesByCondition(int page,
            int proxyCardListPagesize, int sortable, int pid,
            Integer school_id, Integer dev_state,Integer poxystate,String sn);
    
    
    /**
     * 查询代理商下拥有学校
     */
    List<School> searchSchoolsByPid(Integer pid);
    
    /**
     * 更新门禁信息
     */
    int updateEntranceByEid(Long eid,Short state,Short vdstate,Integer sid);
    
    /**
     * 设置门禁报废
     */
    int updateEntranceToScrappedByEid(Long eid,Short state);

    /**
     * 查询代理商的子级代理
     * @param page
     * @param proxySub
     * @param pid
     * @return
     */
    Map<String, Object> searchSubProxys(int page, int proxySub, int pid);

    /**
     * 查询代理商
     * @param pid
     * @return
     */
    Proxy searchProxyByPid(int pid);


    /**
     * 创建子级代理商
     * @param pid
     * @param sub_ptype
     * @param name_add
     * @param cid_add
     * @param uid_add
     * @return
     */
    int insertSubProxy(int pid, int sub_ptype, String name_add,
            int cid_add,Long uid_add);

    /**
     * 删除代理商
     * @param pid_delete
     * @return
     */
    int deleteProxy(int pid_delete);

    /**
     * 卡头数量
     * @param pid
     * @param ic_head_add
     * @return
     */
    int searchProHeadNum(int pid, String ic_head_add);

    /**
     * 分派卡给子级代理商
     * @param pid
     * @param pid_delete
     * @param ic_head_add
     * @param body_begin
     * @param body_end
     * @return
     */
    int insertSubCard(int pid, int pid_delete, String ic_head_add,
            String body_begin, String body_end);

    /**
     * 回收子级代理商的卡
     * @param pid
     * @param pid_delete
     * @param ic_head_add
     * @param body_begin
     * @param body_end
     * @return
     */
    int updateBackSubCard(int pid, int pid_delete, String ic_head_add,
            String body_begin, String body_end);

    /**
     * 查询代理商列表
     * @param page
     * @param page_size
     * @param sortable
     * @return
     */
    Map<String, Object> searchProxyList(Integer cid, String account, String name, int page, int page_size, int sortable);
    
    /**
     * 根据uid查询代理商信息
     * @param uid
     * @return
     */
    Proxy searchProxyByUid(Long uid);
    

    
    /**
     * 修改代理商名称
     * @param uid
     * @param name
     * @return
     */
    int updateProxyName(Long uid,String name);
    
    
    /**
     * 更新代理商信息
     * @param uid
     * @param email
     * @param phone
     * @return
     */
    int updateProxyInfo(Integer pid,String email,String phone,String name,String cidStr);
    
    
}
